package org.esky.reflect;

import java.lang.reflect.Constructor;

import org.esky.reflect.entity.User;

/**
 * @author Jack.Xu
 * @ClassName: MyConstructorRef
 * @Description: TODO
 * @author: Jack.Xu
 * @date: 2013年10月18日 下午1:54:15
 */
public class MyConstructorRef {
	
	public static void getConstructor() throws Exception {
		// 通过类装载器获取User类对象  
		ClassLoader loader = Thread.currentThread().getContextClassLoader();
		Class<?> clazz = loader.loadClass("org.esky.entity.User");
		System.out.println(clazz);

		// 获取类的默认构造器对象并通过它实例化User
		// 无参构造函数
		Constructor<?> constructor1 = null;
		constructor1 = clazz.getDeclaredConstructor((Class[]) null);
		// (Class[])null & new Class[]{}
//		constructor1 = clazz.getConstructor(new Class[]{});
		User user1 = (User) constructor1.newInstance();
		System.out.println(user1);
		
		// 有参构造函数
		Constructor<?> constructor2 = null;
		constructor2 = clazz.getDeclaredConstructor(String.class, Integer.class);
//		constructor2 = clazz.getConstructor(new Class[]{String.class, Integer.class});

		User user2 = (User) constructor2.newInstance("joy", 13);
		System.out.println(user2);
	}
}
